技術文章
技術問答
My Project
iT 徵才
聊天室
2026 鐵人賽
登入/註冊
文章
問答
Tag
邦友
鐵人賽
搜尋
第 12 屆 iThome 鐵人賽
DAY
6
0
自我挑戰組
30天|入門NestJs連載學習筆記
系列 第
6
篇
D06 CH8 | OCP 開放-封閉原則
12th鐵人賽
azsx96385
團隊
Outcome First
2020-09-19 16:40:58
1306 瀏覽
分享至
1. 一個好的軟體架構,可以將修改的程式碼量,降到最低程度,理想狀況為0
目標-使系統易於擴展,而不會因修改而產生較大的影響
透過將系統劃分為元件,並將元件安排到依賴階層中而實現的,這類階層結構可以保護較高層級的元件,免受到低層級元件的變更所影響
2. 越上層的元件,擁有越核心的商業邏輯
離I/O越遠的元件層級越高,離I/O越近的層級越
越上層的元件,擁有越核心的商業邏輯
用櫃檯小姐的故事來說明(參考連結1)
想像一下你(user)今天走進一間公司(I/O),負責接待你的,請你填寫資料的是櫃檯小姐(低層級-處理實作),如果你是來談一筆大生意的,你會經過櫃檯,走到最裡面的落地窗辦公室,老闆正在那準備跟你討論(高層級-核心商業邏輯),我覺得這個說法滿容易想像和理解的,完整內容,請參考下方連結
3. 什麼是元件?
大 [系統層級← 元件層級←模組層級←類別層級←程式碼層級 ] 小
可單獨部署的單位,是系統在部屬的最小部分實體
讀這篇的時候,我一直把元件和模組搞混,後續Ch12有針對元件做一個好像有說,又沒什麼用的定義,一切都是需要感覺,總之我自己認定的是,兩者差異在是否可以被獨立部署,或是說獨立啟動而不需要依賴其他模組,舉例來說像是微服務,我接受是元件,可獨立部署,且包含一個以上的模組
4. 如果元件A應該被保護免於受到“元件B的改變”影響,那麼元件B應該依賴元件A,A←依賴←B,B中會 import A ,B知道A,但A不知道B
(B)低層級實作細節,應該依賴於(A)高層級商業邏輯
前台客服,替顧客服務的內容(實作細節),應該遵守老闆的的規定(商業邏輯)
在這個部分,看懂書中p61頁的圖會滿有幫助的,其中有兩個重點,大板塊的是元件,箭頭的指向則是依賴關係,觀察依賴關係的時候,可以特別著重誰依賴誰,因此如果有變動,受影像的是哪一方,我認為本篇對我的學習重點是
學習使用 import 和看箭頭方向區分依賴關係,謹慎規劃不同模組或是類別間的依賴關係
理解 為何依賴方向,可以保護被依賴者,不受影響,資訊隱藏的好處
參考
搞笑談軟工-Clean Architecture(4):架構三原則首部曲—分層原則
留言
追蹤
檢舉
上一篇
D05 CH7 | SRP 單一職責原則
下一篇
D07 CH9 | LSP 替換原則
系列文
30天|入門NestJs連載學習筆記
共
26
篇
目錄
RSS系列文
訂閱系列文
1
人訂閱
22
D22 台南的散步點心
23
D23 台南|國慶煙火在漁光
24
D24 無暇程式碼-CH20 商業邏輯
25
D25 Ch 22 整潔的架構
26
D25 ch 22 整潔的架構
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
929
組
團體組數
32
組
累計文章數
13263
篇
完賽人數
157
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
15th鐵人賽
16th鐵人賽
13th鐵人賽
17th鐵人賽
14th鐵人賽
12th鐵人賽
18th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
linux
windows server
css
熱門問題
六個語言的 README,要一比一翻完整,還是只寫到「裝得起來」就好?
「相容 MySQL 協議」的引擎,你們是怎麼做能力偵測的?我們試了 42 種,結論有點慘
本地跑模型做評測,你們是怎麼給 context 長度設上限的?我們沒設,7.1 GB 的模型吃掉了 51 GB
熱門回答
六個語言的 README,要一比一翻完整,還是只寫到「裝得起來」就好?
本地跑模型做評測,你們是怎麼給 context 長度設上限的?我們沒設,7.1 GB 的模型吃掉了 51 GB
熱門文章
用 Gemini 打造《智數 Sudoku Master》網頁數獨:能推理、能拍照解答的科技結晶,只有一處美中不足?
桌面、手機、網站都要接 OAuth2 登入,能用同一套嗎?
密碼學基礎複習:Hash、非對稱加密與數位簽章在區塊鏈的應用
講到 IT 監控,你一定聽過 SolarWinds--但你真的了解它在做些什麼嗎?
Want_To_Cry勒索病毒 處理歷程(預防下一次?)
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}